Technical Field
The present disclosure relates to the information technology field. More specifically, this disclosure relates to the management of snapshots in a computing system.
Description of the Related Art
The background of the present disclosure is hereinafter introduced with the discussion of techniques relating to its context. However, even when this discussion refers to documents, acts, artifacts and the like, it does not suggest or represent that the discussed techniques are part of the prior art or are common general knowledge in the field relevant to the present disclosure.
Snapshots are commonly used to save a representation of corresponding states of a computing machine at particular points in time. For example, the snapshots are very useful in test (computing) environments, such as for software development or customer support purposes. Indeed, the snapshots allow moving back and forth along different states of the computing machines in a relatively short amount of time, since they avoid the need of installing and configuring the corresponding software programs every time. In this way, it is possible to test updates (such as patches or new features) or to troubleshoot errors of software programs in test environments that mimic different production (computing) environments.
These possibilities may be exploited at their best in a virtualized (computing) environment, wherein a computing system hosts multiple virtual (computing) machines (VM). Each virtual machine is defined by a corresponding (virtual) software image, which is formed by a memory structure encapsulating its whole content. The virtual machine is put online by simply mounting its software image and then booting from it. In this way, it is possible to revert the virtual machine to any selected snapshot of its software image by putting the virtual machine offline, dismounting its (current) software image, mounting the software image of the selected snapshot and then putting the virtual machine online again. As a result, the movement back and forth along the different states of the virtual machine is very simple and fast.
However, the management of the snapshots may be quite challenging, especially when the computing system is very large. Therefore, some techniques have been proposed for facilitating this task. For example, US-2012/0323853A describes techniques for capturing and analyzing snapshots of virtual machines. One or more computers may automatically obtain snapshots of virtual machines as they are executing to form a pool of virtual machine snapshots. The virtual machine snapshots are then read to obtain a set of features properties of the virtual machine snapshots, including information about a running guest operating system, software installed on the virtual machine, metadata about the virtual machine itself, and others. The features or properties are analyzed, in one embodiment, using a machine learning algorithm to automatically compute and store information about the virtual machines.
Moreover, techniques are available for managing the deployments of the virtual machines. For example, U.S. Pat. No. 9,047,133B discloses a software deployment system that enables a developer to define a logical, multi-tier application blueprint that can be used to create and manage multiple applications in a cloud infrastructure. In the application blueprint, the developer models an overall application architecture, or topology, that includes individual and clustered nodes (e.g., VMs), logical templates, cloud providers, software deployment environments, software services, application-specific code, properties, and dependencies between top-tier and second-tier components. The application can be deployed according to the application blueprint, which means any needed VMs are provisioned from the cloud infrastructure, and application components and software services are installed. Moreover, “Topology Discovery and Service Classification for Distributed-Aware Clouds”, IP.Com, IPCOM000239863, Dec. 5, 2014 discloses a lightweight topology/service detection system that maps a multi-tier application and a service classification algorithm that can determine not only a service type for each multi-tier application, but also the individual virtual machine (VM) application type.
In any case, the computing system may run several software applications, each one comprising software components running on several virtual machines. Moreover, the software components or the whole software applications may have been provided in different versions over time. Therefore, a high number of snapshots may have been taken at successive instants for each virtual machine. It is then quite difficult to get out of this high number of snapshots, with the risk of losing their control.